'''
Created on 15/06/2013

@author: jean
'''
from pm.database import db
from sqlalchemy import ForeignKey
from pm.models.Atributos import Atributos

class AtributoItem(db.Model):
    '''
    Clase que representa los atributos de un item
    '''
    __tablename__ = 'atributo_item'
    
    id_atributo_item = db.Column(db.Integer, primary_key=True, nullable=False)
    
    id_atributo = db.Column(db.Integer,ForeignKey('atributos.id_atributo'), nullable=False)
    
    id_item = db.Column(db.Integer,ForeignKey('items.id_item'), nullable=False)
    
    version_item= db.Column(db.Integer, nullable=False)
      
    tipo_dato = db.Column(db.String, nullable=False)

    valor = db.Column(db.String, nullable=False)
    
    
    def __init__(self, id_atributo, id_item, version_item, tipo_dato, valor):
        """
            metodo que crea un nuevo atributo de un item
            @param id_atributo: el id del atributo al que pertenece
            @param id_item: el id del item al que pertenece un atributo
            @param version_item: la version del item a la que pertenece el atributo
            @param tipo_dato: el tipo de dato del atributo
            @param valor: el valor del atributo
        """
        self.id_atributo = id_atributo
        self.id_item = id_item
        self.version_item = version_item
        self.tipo_dato = tipo_dato
        self.valor = valor
        
        
    def __repr__(self):
        return '{id_atributo_item:%s, id_atributo:%s, id_item:%s, version_item:%s, tipo_dato%s, valor%s}' % (self.id_atributo_item, self.id_atributo, self.id_item, self.version_item, self.tipo_dato,self.valor)
    
    def __json__(self):
        nombreAtributo= Atributos.query.filter(Atributos.id_atributo == self.id_atributo).one()
    
        return {'id':self.id_atributo_item, 
                'id_atributo': self.id_atributo,
                'nombre_atributo': nombreAtributo.nombre_atributo,
                'id_item': self.id_item, 
                'version_item': self.version_item, 
                'tipo_dato': self.tipo_dato,
                'valor':self.valor
                }